<template>
  <div>
    <div id="table-to-print" ref="printArea" class="print-area print-content">

      <div class="pg_table">
        <div class="header">
          <div class="main-title">长期护理失能等级评估表</div>
          <div class="sub-title">表C1 日常生活活动能力评估表</div>
        </div>
        <table class="assessment-table">
          <thead>
            <tr>
              <th style="width: 8%">序号</th>
              <th style="width: 15%">指标</th>
              <th style="width: 7%">分值</th>
              <th style="width: 63%">评估标准</th>
              <th style="width: 7%">得分</th>
            </tr>
          </thead>
          <tbody>
            <tr v-for="(item, index) in tableDataC1" :key="index">
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell index-cell">{{ item.index }}</td>
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell indicator-cell">{{ item.indicator }}</td>
              <td class="score-cell">{{ item.score }}</td>
              <td class="criteria-cell">{{ item.criteria }}</td>
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell result-cell">
                {{ getScoreByIndex(item.index) }}
              </td>
            </tr>
            <tr>
              <td colspan="5" class="total-row">
                上述评估指标总分为 100 分，本次评估得分为 <span class="score-line">{{
                  totalScoreC1
                }}</span><span> 分</span>
              </td>
            </tr>
            <tr>
              <td colspan="5" class="evaluator-row">
                评估人员（签章）：<span class="evaluator-line">1.{{ qzUser[0] }}</span>
                <span class="evaluator-line">2.{{ qzUser[1] }}</span>
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      <div class="pg_table">
        <div class="header">
          <div class="sub-title">表C2 认知能力评估表</div>
        </div>
        <table class="assessment-table">
          <thead>
            <tr>
              <th style="width: 8%">序号</th>
              <th style="width: 15%">指标</th>
              <th style="width: 7%">分值</th>
              <th style="width: 63%">评估标准</th>
              <th style="width: 7%">得分</th>
            </tr>
          </thead>
          <tbody>
            <tr v-for="(item, index) in tableDataC2" :key="index">
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell index-cell">{{ item.index }}</td>
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell indicator-cell">{{ item.indicator }}</td>
              <td class="score-cell">{{ item.score }}</td>
              <td class="criteria-cell">{{ item.criteria }}</td>
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell result-cell">
                {{ getScoreByIndex(item.index) }}
              </td>
            </tr>
            <tr>
              <td colspan="5" class="total-row">
                上述评估指标总分为 16 分，本次评估得分为 <span class="score-line">{{
                  totalScoreC2
                }}</span><span> 分</span>
              </td>
            </tr>
            <tr>
              <td colspan="5" class="evaluator-row">
                评估人员（签章）：<span class="evaluator-line">1.{{ qzUser[0] }}</span>
                <span class="evaluator-line">2.{{ qzUser[1] }}</span>
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      <div class="pg_table">
        <div class="header">
          <div class="sub-title">表C3 感知觉与沟通能力评估表</div>
        </div>
        <table class="assessment-table">
          <thead>
            <tr>
              <th style="width: 8%">序号</th>
              <th style="width: 15%">指标</th>
              <th style="width: 7%">分值</th>
              <th style="width: 63%">评估标准</th>
              <th style="width: 7%">得分</th>
            </tr>
          </thead>
          <tbody>
            <tr v-for="(item, index) in tableDataC3" :key="index">
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell index-cell">{{ item.index }}</td>
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell indicator-cell">{{ item.indicator }}</td>
              <td class="score-cell">{{ item.score }}</td>
              <td class="criteria-cell">{{ item.criteria }}</td>
              <td v-if="item.rowSpan" :rowspan="item.rowSpan" class="merged-cell result-cell">
                {{ getScoreByIndex(item.index) }}
              </td>
            </tr>
            <tr>
              <td colspan="5" class="total-row">
                上述评估指标总分为 12 分，本次评估得分为 <span class="score-line">{{
                  totalScoreC3
                }}</span><span> 分</span>
              </td>
            </tr>
            <tr>
              <td colspan="5" class="evaluator-row">
                评估人员（签章）：<span class="evaluator-line">1.{{ qzUser[0] }}</span>
                <span class="evaluator-line">2.{{ qzUser[1] }}</span>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</template>

<script>
import crudZhsq from '@/api/business/zhsq'

export default {
  name: 'PdfPrinter',
  props: {
    // 明确props定义
    assessmentId: {
      type: [String, Number],
      required: true,
      default: null,
      validator: value => {
        return value !== null && value !== undefined
      }
    }
  },
  data() {
    return {
      qzUser: [],
      totalScoreC1: 0,
      totalScoreC2: 0,
      totalScoreC3: 0,
      scoreData: [],
      scoreMap: {},
      tableDataC1: [
        {
          index: '1',
          indicator: '进食',
          score: '0分',
          criteria: '意识不清晰，完全依赖外人协助进食或有留置营养管',
          result: '',
          rowSpan: 7
        },
        {
          score: '1分',
          criteria: '意识清晰，完全依赖他人，不能经口进食，需留置营养管'
        },
        {
          score: '2分',
          criteria: '不能使用餐具少量进食，以外人协助为主'
        },
        {
          score: '4分',
          criteria: '能使用餐具，大量需要帮助(用勺子)'
        },
        {
          score: '6分',
          criteria: '能使用餐具，部分需要帮助(用筷子)'
        },
        {
          score: '8分',
          criteria: '可以自行进食，需外人监督监督提示'
        },
        {
          score: '10分',
          criteria: '自理(在合理时间内能独立使用餐具进食各种食物，可使用辅助工具独立完成进食，但不包括取饭、做饭)'
        },
        {
          index: '2',
          indicator: '穿衣',
          score: '0分',
          criteria: '完全依赖他人协助',
          result: '',
          rowSpan: 5
        },
        {
          score: '2分',
          criteria: '不能自己穿脱衣服或假肢或矫形器，但可进行肢体配合'
        },
        {
          score: '4分',
          criteria: '需要部分帮助(能自己穿脱衣服或假肢或矫形器，但需他人帮助整理衣物、系扣/鞋带、拉拉链等)'
        },
        {
          score: '8分',
          criteria: '可以自理，需他人监督提示'
        },
        {
          score: '10分',
          criteria: '自理(自己系纽扣，关、开拉锁和穿鞋)'
        },
        {
          index: '3',
          indicator: '面部与口腔清洁',
          criteria: '昏迷及意识障碍，完全需要帮助',
          score: '0分',
          result: '',
          rowSpan: 4
        },
        {
          score: '2分',
          criteria: '神志清，肢体障碍，不能完成准备和收拾，但可以完成基本清洁'
        },
        {
          score: '4分',
          criteria: '神志清，肢体欠协调，可部分完成准备和收拾，能完成基本清洁'
        },
        {
          score: '6分',
          criteria: '独立洗脸、梳头、刷牙、剃须(不包括准备洗脸水、梳子、牙刷等准备工作)'
        },
        {
          index: '4',
          indicator: '大便控制',
          score: '0分',
          criteria: '完全不能控制大便排泄，需要完全依赖他人',
          result: '',
          rowSpan: 5
        },
        {
          score: '2分',
          criteria: '经常失禁(平均每周⩾3次)'
        },
        {
          score: '4分',
          criteria: '偶有失禁(平均每周⩾1次)'
        },
        {
          score: '6分',
          criteria: '需要他人提示或便秘需要人工帮助取便或药物可以控制'
        },
        {
          score: '8分',
          criteria: '能控制'
        },
        {
          index: '5',
          indicator: '小便控制',
          criteria: '经常失禁且完全需要他人帮忙完成排尿行为，或留置导尿管但无法自行管理导尿管',
          score: '0分',
          result: '',
          rowSpan: 5
        },
        {
          score: '2分',
          criteria: '经常失禁(平均每天⩾1次)'
        },
        {
          score: '4分',
          criteria: '偶有失禁(每24h<1次，但每周>1次)'
        },
        {
          score: '6分',
          criteria: '依靠外人帮助或提示可以控制，或留置导尿管可自行管理导尿管'
        },
        {
          score: '8分',
          criteria: '能控制'
        },
        {
          index: '6',
          indicator: '用厕',
          criteria: '需要极大地帮助或完全依赖他人',
          score: '0分',
          result: '',
          rowSpan: 6
        },
        {
          score: '2分',
          criteria: '只能在床上使用便器'
        },
        {
          score: '4分',
          criteria: '肢体障碍及体力虚弱，需他人帮忙整理衣裤和使用便椅'
        },
        {
          score: '6分',
          criteria: '肢体欠协调，在帮助下使用便椅或如厕'
        },
        {
          score: '8分',
          criteria: '可自行如厕，需外人协助'
        },
        {
          score: '12分',
          criteria: '自理(能够使用厕纸、穿脱裤子等)'
        },
        {
          index: '7',
          indicator: '平地行走',
          criteria: '卧床不起、不能步行、移动需要完全帮助',
          score: '0分',
          result: '',
          rowSpan: 8
        },
        {
          score: '2分',
          criteria: '不能行走，只在床上简单活动'
        },
        {
          score: '4分',
          criteria: '在较大程度上依赖他人搀扶(⩾2人)或依赖他人帮助使用轮椅等辅助工具才能移动'
        },
        {
          score: '6分',
          criteria: '使用轮椅，无需外力辅助'
        },
        {
          score: '10分',
          criteria: '在轮椅上能独立行动'
        },
        {
          score: '12分',
          criteria: '需1人搀扶步行或使用拐杖等辅助工具或扶着墙、周围设施，转移时需他人在旁监护提示'
        },
        {
          score: '15分',
          criteria: '独立步行，需有人陪同'
        },
        {
          score: '20分',
          criteria: '独立步行，(可用辅助器，在家及附近)'
        },
        {
          index: '8',
          indicator: '床椅转移',
          criteria: '完全依赖他人，不能坐',
          score: '0分',
          result: '',
          rowSpan: 6
        },
        {
          score: '3分',
          criteria: '需大量帮助(至少2人，身体帮助)，能坐'
        },
        {
          score: '6分',
          criteria: '需少量帮助(1人搀扶或使用拐杖等辅助工具或扶着墙、周围设\n' +
            '施，转移时需他人在旁监护、提示)，能坐起'
        },
        {
          score: '8分',
          criteria: '可自行坐起并自行移动至床旁'
        },
        {
          score: '10分',
          criteria: '可自行坐起并自行移动至轮椅上'
        },
        {
          score: '12分',
          criteria: '自理'
        },
        {
          index: '9',
          indicator: '上下楼',
          criteria: '不能，或需极大帮助或完全依赖他人',
          score: '0分',
          result: '',
          rowSpan: 4
        },
        {
          score: '2分',
          criteria: '需要部分帮助(需扶着楼梯、他人搀扶、使用拐杖或需他人在旁提示)'
        },
        {
          score: '4分',
          criteria: '独立上下楼(使用支具且可独自完成穿、脱动作)'
        },
        {
          score: '6分',
          criteria: '完全独立上下楼(可借助电梯)'
        },
        {
          index: '10',
          indicator: '洗澡',
          criteria: '完全需要他人帮助',
          score: '0分',
          result: '',
          rowSpan: 5
        },
        {
          score: '2分',
          criteria: '肢体严重障碍，大部分活动需要他人帮助'
        },
        {
          score: '4分',
          criteria: '需他人帮助，部分肢体可以配合'
        },
        {
          score: '6分',
          criteria: '需他人帮助，肢体完全可以配合'
        },
        {
          score: '8分',
          criteria: '准备好洗澡水后，可自理(需要监督)'
        }

      ],
      tableDataC2: [
        {
          index: '11',
          indicator: '时间定向',
          score: '0分',
          criteria: '无时间观念',
          result: '',
          rowSpan: 5
        },
        {
          score: '1分',
          criteria: '时间观念很差，年、月、日不清楚，可知上午、下午或白天、夜间'
        },
        {
          score: '2分',
          criteria: '时间观念较差，年、月、日不清楚，可知上半年或下半年或季节'
        },
        {
          score: '3分',
          criteria: '时间观念有些下降，年、月、日(或星期几)不能全部分清(相差两天或以上)'
        },
        {
          score: '4分',
          criteria: '时间观念(年、月)清楚，日期(或星期几)可相差一天'
        },
        {
          index: '12',
          indicator: '人物定向',
          score: '0分',
          criteria: '不认识任何人(包括自己)',
          result: '',
          rowSpan: 5
        },
        {
          score: '1分',
          criteria: '只认识自己或极少数日常同住的亲人或照护者等'
        },
        {
          score: '2分',
          criteria: '能认识一半日常同住的亲人或照护者等，能称呼或知道关系等'
        },
        {
          score: '3分',
          criteria: '能认识大部分共同生活居住的人，能称呼或知道关系'
        },
        {
          score: '4分',
          criteria: '认识长期共同一起生活的人，能称呼并知道关系'
        },
        {
          index: '13',
          indicator: '空间定向',
          criteria: '不能单独外出，无空间观念',
          score: '0分',
          result: '',
          rowSpan: 5
        },
        {
          score: '1分',
          criteria: '不能单独外出，少量知道自己居住或生活所在地的地址'
        },
        {
          score: '2分',
          criteria: '不能单独外出，但知道较多有关自己日常生活的地址'
        },
        {
          score: '3分',
          criteria: '不能单独外出，但能准确知道自己日常生活所在地的地址'
        },
        {
          score: '4分',
          criteria: '能在日常生活范围内单独外出，如在日常居住小区内独自外出购物等'
        },
        {
          index: '14',
          indicator: '记忆力',
          score: '0分',
          criteria: '完全不能回忆即时信息，并且完全不能对既往事物进行正确的回忆',
          result: '',
          rowSpan: 5
        },
        {
          score: '1分',
          criteria: '对既往事物能有少部分正确的回忆，没有近期记忆'
        },
        {
          score: '2分',
          criteria: '能回忆大部分既往事物，记住1个词语'
        },
        {
          score: '3分',
          criteria: '能回忆大部分既往事物，记住2个词语'
        },
        {
          score: '4分',
          criteria: '能够完整回忆既往事物，记住3个词语'
        }
      ],
      tableDataC3: [
        {
          index: '15',
          indicator: '视力',
          score: '0分',
          criteria: '完全失明',
          result: '',
          rowSpan: 5
        },
        {
          score: '1分',
          criteria: '只能看到光、颜色和形状(大致轮廓)，眼睛可随物体移动'
        },
        {
          score: '2分',
          criteria: '视力有限，看不清报纸大标题，但能辨认较大的物体'
        },
        {
          score: '3分',
          criteria: '能看清楚大字体，但看不清书报上的标准字体，辨别小物体有一定困难'
        },
        {
          score: '4分',
          criteria: '与日常生活能力相关的视力(如阅读书报、看电视等)基本正常'
        },
        {
          index: '16',
          indicator: '听力',
          score: '0分',
          criteria: '完全失聪',
          result: '',
          rowSpan: 5
        },
        {
          score: '1分',
          criteria: '讲话者大声说话或说话很慢，才能部分听见'
        },
        {
          score: '2分',
          criteria: '正常交流有些困难，需在安静的环境大声说话才能听到'
        },
        {
          score: '3分',
          criteria: '在轻声说话或说话距离超过2米时听不清'
        },
        {
          score: '4分',
          criteria: '与日常生活习惯相关的听力基本正常(如能听到门铃、电 视、电话等声音)'
        },
        {
          index: '17',
          indicator: '沟通能力',
          criteria: '完全不能理解他人的言语，也无法表达',
          score: '0分',
          result: '',
          rowSpan: 5
        },
        {
          score: '1分',
          criteria: '不能完全理解他人的话，只能以简单的单词或手势表达大概意愿'
        },
        {
          score: '2分',
          criteria: '勉强可与他人交流，谈吐内容不清楚，需频繁重复或简化□头表达'
        },
        {
          score: '3分',
          criteria: '能够表达自己的需要或理解他人的话，但需要增加时间或给予帮助'
        },
        {
          score: '4分',
          criteria: '无困难，能与他人正常沟通和交流'
        }
      ]

    }
  },
  created() {
    this.fetchScoreData()
    this.getQzUser()
  },
  methods: {
    print() {
      window.print()
    },
    // 获取评分数据
    async getQzUser() {
      const res = await crudZhsq.getQzUser(this.assessmentId)
      this.qzUser = res
    },
    // 获取评分数据
    async fetchScoreData() {
      try {
        const res = await crudZhsq.getPdfScore(this.assessmentId)
        this.scoreData = res
        this.scoreMap = new Map(res.map(item => [item.BIS_ADL_XM_PX, item.BIS_ADL_XMXX_FS]))
        // 遍历 scoreMap 累加每个项目的分数
        // 遍历 scoreMap，根据键值累加范围 1 到 10 的分数
        for (const [key, score] of this.scoreMap) {
          if (key >= 1 && key <= 10) {
            this.totalScoreC1 += Number(score)
          }
          if (key >= 11 && key <= 14) {
            this.totalScoreC2 += Number(score)
          }
          if (key >= 15 && key <= 17) {
            this.totalScoreC3 += Number(score)
          }
        }
      } catch (err) {
        console.error('获取评分数据失败:', err)
        this.$message.error('获取评分数据失败')
      }
    },
    // 根据序号获取得分
    getScoreByIndex(index) {
      if (!this.scoreMap || this.scoreMap.size === 0) return ''
      // 直接从Map中获取，无需遍历查找
      return this.scoreMap.get(Number(index)) || ''
    }
  }
}
</script>

<style scoped>
.print-area {
  width: 210mm;
  min-height: 297mm;
  padding: 15mm;
  font-family: "SimSun", "宋体", serif;
  color: #000;
  background: white;
  box-sizing: border-box;
}

.header {
  text-align: center;
  margin-bottom: 15px;
}

.main-title {
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 5px;
}

.sub-title {
  font-size: 16px;
}

.assessment-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 10px;
  font-size: 14px;
}

.assessment-table th,
.assessment-table td {
  border: 1px solid #000;
  padding: 5px 8px;
}

.assessment-table th {
  background-color: #f5f5f5;
  font-weight: bold;
  text-align: center;
}

/* 新增合并单元格样式 */
.merged-cell {
  text-align: center;
  vertical-align: middle;
}

.index-cell {
  font-weight: bold;
}

.indicator-cell {
  font-weight: bold;
}

.criteria-cell {
  line-height: 1.5;
  padding: 8px;
}

.score-cell {
  text-align: center;
  vertical-align: middle;
}

.result-cell {
  text-align: center;
  vertical-align: middle;
}

/* 打印时隐藏打印按钮 */
@media print {

}

.total-row, .evaluator-row {
  font-size: 14px;
  font-weight: bold;
  padding-top: 10px;
  padding-bottom: 10px;
}

.score-line {
  display: inline-block;
  border-bottom: 1px solid #000;
  min-width: 60px;
  margin-left: 7px;
  text-align: center;
}

.evaluator-line {
  display: inline-block;
  border-bottom: 1px solid #000;
  min-width: 80px;
  margin-left: 10px;
}

.pg_table{
  margin-bottom: 50px;
}

</style>
